package cn.exrick.xboot.modules.backlogOrFullList.service;

import cn.exrick.xboot.modules.backlogOrFullList.entity.APPBacklogOrFullList;
import cn.exrick.xboot.modules.backlogOrFullList.entity.BacklogOrFullList;
import cn.exrick.xboot.modules.base.entity.DictData;
import cn.exrick.xboot.modules.base.entity.User;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 待办已办列表接口
 * @author Exrick
 */
public interface IbacklogOrFullListService extends IService<BacklogOrFullList> {

    /**
     * 待办已办列表的条件查询
     * @param page
     * @param backlogOrFullList
     * @return
     */
    public IPage<BacklogOrFullList> selectBacklogOrFullListPageVoMap(Page page, @Param("backlogOrFullList") BacklogOrFullList backlogOrFullList);

    /**
     * 20190821
     * njp
     * portal待办已办列表的条件查询(num控制数量)
     * map 为参数
     */
    public List<BacklogOrFullList> selectBacklogOrFullListByMap(@Param("map") Map<String, Object> map);

    /**
     *查询APP的待办列表
     */
    public List<APPBacklogOrFullList> selectBacklogOrFullListAPP(BacklogOrFullList backlogOrFullList);

    /**
     * xbw
     * 根据推动的消息ID,改变消息状态
     */
    public Integer UpdateMseeageType(@Param("map") Map<Object, Object> map);

    /**
     * xbw
     * 查找消息ID
     */
    public String  selectInfoId(@Param("mapId") Map<Object, Object> mapId);

    /**
     * APP待办已办列表的条件查询
     * @param page
     * @param backlogOrFullList
     * @return
     */
    public IPage<BacklogOrFullList> selectBacklogOrFullListPageVoMapApp(Page page, @Param("backlogOrFullList") BacklogOrFullList backlogOrFullList);

/**
     * 向APP中推送待办角标（使用极光SDK中的方法推送角标）
     * 数量
     * username  用户名 eg：admin
 * @param alert 标题
     * @return
     */
    public Boolean sendBacklogAngleToAPPIos(String username, Integer num, String alert);

    /**
     * 向APP中推送待办角标（使用极光SDK中的方法推送角标）
     * 数量
     * @param  username  用户名 eg：admin
     * @param num 新增待办数量
     * @return
     */
    public Boolean sendBacklogAngleToAPPAndroid(String username, Integer num, String alert);

    /**
     * 向APP中推送待办角标(使用自定义消息的方法推送角标)
     * 数量
     * @param  username  用户名 eg：admin
     * @param num 待办总数
     * @return
     */
    public Boolean sendBacklogAngleAllToAPPAndroid(String username, Integer num);


    /**
     * 查询当前用户的待办数量
     * @param username 账号
     * @return
     */
    public Integer selectBacklogAngleNum(String username);

    /**
     * add njp 20200427
     * 通过messageId删除待办已办数据
     * @return
     */
    public void deleteBacklogByMessageID(String messageId);


    /**
     * 20200706
     * 解析批量的待办数据
     * @param jsonObject
     */
    public void parseBacklogsJson(JSONObject jsonObject);
    /**
     *根据用户删除待办
     * @param userId
     */
    public void deleteBacklogByUser(@Param("userId") String userId);

    /**
     * 根据users批量删除
     *
     */
    public Boolean deleteBacklogByUsers(List<User> userlist);


    /**
     * 初始化待办数据
     * @param userlist
     * @param urls
     * @return
     */
    public boolean initBacllog(List<User> userlist, List<DictData> urls);
    /**
     * njp
     * 待办初始化（通过拉取数据的方式）
     */
     void backlogInitByCall();
}